#include<stdio.h>
#include<unistd.h>
#include<string.h>
#include<stdlib.h>

#define FORMAT "[%s@%s %s]#"
#define COMMAND_SIZE 1024

//myshel需要建立两张表 环境变量表 命令行参数表

#define MAX_ENVS 100
char *g_env[MAX_ENVS];//环境变量表
int g_envs = 0;//环境变量的个数

void InitEnv(){
  extern char** environ;
  memset(g_env,0,sizeof(g_env));
  
  g_envs = 0;
  for(int i = 0; environ[i]; i++){
    g_env[i] = (char*)malloc(sizeof(strlen(environ[i])+1));
    strcpy(g_env[i],environ[i]);
    g_envs++; 
  }
  g_env[g_envs++] = (char*)malloc(sizeof("test=HAHA"));
  g_env[g_envs] = NULL;

  for(int i = 0; g_env[i]; i++)
    putenv(g_env[i]);

  environ = g_env;
}
const char* GetUserName(){
  const char* name = getenv("USER");
  return name == NULL ? "None" :name;
}
const char* GetHostName(){
  const char* hostname = getenv("HOSTNAME");
  return hostname == NULL ? "None":hostname;
}
//pwd先改变，然后环境变量的PWD再更新，所以不能通过环境变量来求pwd
char cwd[1024];
char cwdenv[1024];
const char * GetPwd(){
  const char* pwd = getcwd(cwd,sizeof(cwd));

}
void MakeCommandLine(char* cmd_prompt,int size){
  snprintf(cmd_prompt,size,FORMAT,)
}
void PrintCommandPrompt(){
  char prompt[COMMAND_SIZE];
  MakeCommandLine(prompt,sizeof(prompt));
  printf("%s",prompt);
  fflush(stdout);
}
int main(){
  InitEnv();
  
  while(1){
    //1.输入命令行提示符
    PrintCommandPrompt();
  }
  return 0;
}
